package org.javaboy.vhr.service;

import org.javaboy.vhr.mapper.TaskMapper;
import org.javaboy.vhr.model.RespPageBean;
import org.javaboy.vhr.model.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

@Service
public class TaskService {
    @Autowired
    TaskMapper taskMapper;

    /**
     * 获取所有任务（分页）
     * @param page 页码
     * @param size 每页大小
     * @param keyword 关键词搜索
     * @return 任务列表
     */
     public RespPageBean getAllTasks(Integer page, Integer size, String keyword) {
         if (page != null && size != null) {
             page = (page - 1) * size;
         }
         List<Task> list = taskMapper.getAllTasks(page, size, keyword);
         // Long total = taskMapper.getTotal(keyword);
         RespPageBean bean = new RespPageBean();
         bean.setData(list);
         bean.setTotal(taskMapper.getTotal(keyword));
         return bean;
     }


    /**
     * 获取指定员工的任务（分页）
     * @param eid 员工ID
     * @param page 页码
     * @param size 每页大小
     * @return 任务列表
     */
    public RespPageBean getTasksByEmpId(Integer eid, Integer page, Integer size) {
        if (page != null && size != null) {
            page = (page - 1) * size;
        }
        List<Task> data = taskMapper.getTasksByEmpId(eid, page, size);
        Long total = taskMapper.getTotalByEmpId(eid);
        RespPageBean bean = new RespPageBean();
        bean.setTotal(total);
        bean.setData(data);
        return bean;
    }

    /**
     * 获取指定管理员发布的任务（分页）
     * @param hid 管理员ID
     * @param page 页码
     * @param size 每页大小
     * @return 任务列表
     */
    public RespPageBean getTasksByHrId(Integer hid, Integer page, Integer size) {
        if (page != null && size != null) {
            page = (page - 1) * size;
        }
        List<Task> data = taskMapper.getTasksByHrId(hid, page, size);
        Long total = taskMapper.getTotalByHrId(hid);
        RespPageBean bean = new RespPageBean();
        bean.setTotal(total);
        bean.setData(data);
        return bean;
    }

    /**
     * 添加任务
     * @param task 任务信息
     * @return 是否成功
     */
    public int addTask(Task task) {
        task.setCreateTime(new Date());
        task.setStatus("未分配");
        task.setIsDeleted(0);
        return taskMapper.insertSelective(task);
    }

    /**
     * 更新任务
     * @param task 任务信息
     * @return 是否成功
     */
    public int updateTask(Task task) {
        return taskMapper.updateByPrimaryKeySelective(task);
    }

    /**
     * 删除任务（逻辑删除）
     * @param id 任务ID
     * @return 是否成功
     */
    public int deleteTask(Integer id) {
        return taskMapper.logicalDeleteTask(id);
    }

    /**
     * 获取单个任务详情
     * @param id 任务ID
     * @return 任务对象
     */
    public Task getTaskById(Integer id) {
        return taskMapper.selectByPrimaryKey(id);
    }

    /**
     * 员工确认接收任务
     * @param id 任务ID
     * @return 是否成功
     */
    public int confirmTask(Integer id) {
        return taskMapper.confirmTask(id, new Date());
    }

    /**
     * 员工完成任务
     * @param id 任务ID
     * @return 是否成功
     */
    public int completeTask(Integer id) {
        return taskMapper.completeTask(id, new Date());
    }

    /**
     * 任务发布者确认任务完成
     * @param id 任务ID
     * @return 是否成功
     */
    public int confirmTaskCompletion(Integer id) {
        return taskMapper.confirmTaskCompletion(id);
    }

    /**
     * 取消任务
     * @param id 任务ID
     * @return 是否成功
     */
    public int cancelTask(Integer id) {
        return taskMapper.cancelTask(id);
    }
}
